package day04;
/*
@Author: 王少杰
@Date: 2025/1/3
@Time: 9:35
@FileName: Demo03.java
@描述:
抽象类:
    特殊的类，使用abstract关键字修饰
    有抽象方法的类，就是抽象类
    普通方法，有方法头(声明)，方法体(实现),
    抽象方法，只有方法头(声明)，没有方法体
    抽象类不能被实例化。要使用抽象类时，要使用其子类来实例化。（多态）
    抽象类设计出来就是为了继承。
    抽象类相当于定义了一个模板。子类必须要实现父类的抽象方法。如果不实现，子类也要定义为抽象的。
*/
public class Demo03 {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.speak("英语");
        teacher.run("西安");

        //Person p1 = new Person();
        Person p1 = new Teacher();
        p1.speak("中文");
        p1.run("街道");
    }
}

abstract class Person {
    public void speak(String language){ //方法声明
        System.out.println("说" + language); //方法体
    }
    public abstract void run(String place);
}

class Teacher extends Person {
    @Override
    public void run(String place) {
        System.out.println("在" + place + "跑步");
    }
}

abstract class Student extends Person {

}